        Programmdoko fr Turboass von Sigmasoft
            -- nur fr interne Zwecke !! --

1) Aufbau des Headers einer Sourcedatei:

Offset                  Inhalt
  0.w           Codierwert 1
  2.w           Codierwert 2
  4.w           Versionsnummer
  8.w           Anzahl der Zeilen
 10.l           Lnge der Zeileninfo (gecruncht)
 14.l           Lnge des Programmcodes
 18.l           Lnge der Labeltabelle (gecruncht)
 22.l           Lnge der Remarktabelle
 26.w           Anzahl der Eintrge in der Labeltabelle
 28.w           Marker '1'
 30.w           Marker '2'
  :               :
 46.w           Marker '0'
 48.w           Zeiger auf TEXT
 50.w           Zeiger auf DATA
 52.w           Zeiger auf BSS
 54.w           Datum der letzten nderung
 56.w           Uhrzeit der letzten nderung
 58.w           Datum der Ersterstellung
 60.w           Uhrzeit der Ersterstellung
 62.w           letzte Zeilen fr Control Z
 64.w           obereste Zeile des Ausschnitts (top_line)
 66.w           Cursorspalte (save_pos)
 68.w           Blockanfang
 70.w           Blockende
 72.w           ak. Zeile
 74.w           Befehlstabulator
 76.w           Operandentabulator
 78.w           Remarktabulator
 80.b           Flag fr Krzen von HEX
 81.b           Flag fr SP/A7
 82.b           Upperflag fr Hexzahlen
 83.b           Upperflag fr Register
 84.b           Gro/Kleinflag fr Pseudoopcodes
 85.b           Gro/Kleinflag fr Opcodes
 86.b           Insert-Flag
 87.b           Speicher fr letztes Zeichen
 88.b           Symbole gro, klein oder gemischt
 89.b           Suchzeichen
 90.b           start_flag
 91.b           reserviert
 92-99.b        Passwort fr Protectmodus
100.w           reserviert (???)
102.l           Zielcodelnge
106.l           Speicher fr GEM
110-127         reserviert


2) Aufbau der Bitplane in D1 bei der Routine 'get_ea':
       (ist das Bit gesetzt, so ist die EA nicht erlaubt)
    Bit 0   -   Dn
        1   -   An
        2   -   (An)
        3   -   (An)+
        4   -   -(An)
        5   -   d(An)
        6   -   d(An,Xi)
        7   -   Abs.w,Abs.l
        8   -   d(PC),d(PC,Xi)
        9   -   unmittelbar
       10   -   CCR
       11   -   SR
       12   -   USP

3) Aufbau der Zeileninfotabelle:

Offset          Inhalt
  0             Lnge des Opcodes
  2             Daten fr Operator
  4             Daten fr Operand
  6             Index des Labels, das in der Zeile definiert ist,
                sonst gleich $FFFF

3a) Aufbau des Datenwords:

                        F E D C B A 9 8 7 6 5 4 3 2 1 0
        Quickoperant    1 1 -------Labelindex----------
        d(An,Xi)        1 0 H-Nib-Index a c 0 x EOffset
        Label/Formel    0 0 0 0 0 0 0 1 a c b b EOffset
        Zahl            0 0 0 0 0 0 0 0 0 0 0 0 c d d d
        DC              0 0 0 0 0 0 1 0 0 0 b b 0 0 0 0   Index des Eintrags
        DS              0 0 0 0 0 1 0 0 b b 0 e c d d d   Anzahl
        TEXT            0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0
        DATA            0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0
        BSS             0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0
        EVEN            0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0
        EQU             0 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0
        OPT             0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0
        END             0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 0

        a: PC
        b: Breite: 00=Byte
                   01=Word
                   10=Long
        c: Vorzeichen (0=Plus/1=Minus)
        d: Darstellungsart:     000=Dezimal
                                001=Hex
                                010=Binr
                                011=reserviert
                                100="Char"
                                101='Char'
                                110="String"
                                111='String'
        EOffset: Einsetzoffset fr Pass 2
        H-Nib-Index: High-Nibble der Labelnummer
        Labelindex: 14-Bit-Labelnummer
        e: Darstellungsart der Anzahl: 0=Dezimal/1=Hex
        x: 1=Registerliste (a=1 -> -(sp) )

4) Aufbau der Labeltabelle:
        Symbol:
        0 l :   Wert
        4 b :   Flags (Bit7=1 -> defined, Rest noch unbenutzt)
        5 b :   Typflag ($00=Label,$FF=Konstante,$01=Registerliste)
        6 w :   unbenutzt
     8-30 b :   Symbolname (23 Zeichen)
       31 b :   $00 (Kennung fr Symboleintrag)

        Formel:
        0 l :   Wert
        4 b :   Flags (Bit7=1 -> defined, Rest noch unbenutzt)
        5 b :   Typflag ($00=Label,$FF=Konstante,$01=Registerliste)
     6-30 w :   Formeltoken
                Bit 15-14: Anzahl ')'
                Bit 13-12: Anzahl '('
                Bit 11-8 : Rechenoperation
                                0= +
                                1= -
                                2= |
                                3= ^
                                4= <<
                                5= >>
                                6= *
                                7= /
                                8= &
                                9= %
                               10= =
                               11= <
                               12= >
                               13= <=
                               14= >=
                               15= <>
                Bit 7 : Symbolflag
                Bit 6 : Longflag
                Bit 5 : Flag fr '!'
                Bit 4 : Flag fr '~'
                Bit 3 : Vorzeichen
                Bit 2-0: Darstellung der Zahl(bei Symbol null)
                es folgt ein Word(Bit6=0) oder ein Long(Bit6=1), das den
                Wert bzw. den Index enthlt
                interne Variablen haben folgenen Index:
                $8000: *
                $8008: ^^DATE
                $8010: ^^TIME
                $8018: ^^RSCOUNT

       31 b :   $FF (Kennung fr Formeleintrag)

        DC-Eintrag:
     0-30 w :   Flagwords fr DC-Zeile
                Bit 15=1 dann
                Bit 14  : Vorzeichen
                Bit 13-0: Symbol-oder Formelindex

                Bit 15=0 dann
                Bit 3-0: Darstellungsflag fr Zahl
                Sonderfall unteres Byte =$FF, dann
                Bit 13-8: Highbyte Indexnummer
                Bit 15-8 des folgenen Words: Lowbyte Indexnummer des
                                                Folgeeintrags
       31 b :   $FE (Kennung fr DC-Eintrag)

5) Liste aller Pseudoopcodes:
        $02: DC         $30: DX.B
        $04: DS         $32: DXSET
        $06: TEXT       $34: DCB
        $08: DATA       $36: FAIL
        $0a: BSS        $38: ORG
        $0c: EVEN       $3A: SET
        $0e: EQU        $3C: REPT
        $10: OPT        $3E: ENDR
        $12: END
        $14: RSRESET
        $16: RSBSS
        $18: RS
        $1A: RSSET
        $1C: REG
        $1E: IBYTES
        $20: BASE
        $22: PATH
        $24: CNOP
        $26: OUTPUT
        $28: IF
        $2A: ELSE
        $2C: ENDC
        $2E: RSEVEN

